From 8c3a668d52251f746c18d21118f0de36476557cc Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 2 Sep 2012 23:11:15 -0400 Subject: [PATCH] Add a way to test touch features The GTK_TEST_TOUCHSCREEN envvar is now checked in entries and textviews to allow testing of text handles with other kinds of devices. --- gtk/gtkentry.c | 10 +++++++--- gtk/gtktextview.c | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c index 40535d9f40..8ebb977f39 100644 --- a/gtk/gtkentry.c +++ b/gtk/gtkentry.c @@ -318,6 +318,7 @@ enum { }; static guint signals[LAST_SIGNAL] = { 0 }; +static gboolean test_touchscreen = FALSE; typedef enum { CURSOR_STANDARD, @@ -1938,6 +1939,7 @@ gtk_entry_class_init (GtkEntryClass *class) G_PARAM_DEPRECATED)); g_type_class_add_private (gobject_class, sizeof (GtkEntryPrivate)); + test_touchscreen = g_getenv ("GTK_TEST_TOUCHSCREEN") != NULL; gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_ENTRY_ACCESSIBLE); } @@ -4044,7 +4046,8 @@ gtk_entry_button_press (GtkWidget *widget, GdkDevice *source; source = gdk_event_get_source_device ((GdkEvent *) event); - is_touchscreen = gdk_device_get_source (source) == GDK_SOURCE_TOUCHSCREEN; + is_touchscreen = test_touchscreen || + gdk_device_get_source (source) == GDK_SOURCE_TOUCHSCREEN; priv->select_words = FALSE; priv->select_lines = FALSE; @@ -4229,7 +4232,8 @@ gtk_entry_button_release (GtkWidget *widget, source = gdk_event_get_source_device ((GdkEvent *) event); - if (gdk_device_get_source (source) == GDK_SOURCE_TOUCHSCREEN) + if (test_touchscreen || + gdk_device_get_source (source) == GDK_SOURCE_TOUCHSCREEN) gtk_entry_update_handles (entry, GTK_TEXT_HANDLE_MODE_CURSOR); priv->in_drag = 0; @@ -4411,7 +4415,7 @@ gtk_entry_motion_notify (GtkWidget *widget, gtk_entry_set_positions (entry, tmp_pos, -1); /* Update touch handles' position */ - if (input_source == GDK_SOURCE_TOUCHSCREEN) + if (test_touchscreen || input_source == GDK_SOURCE_TOUCHSCREEN) gtk_entry_update_handles (entry, (priv->current_pos == priv->selection_bound) ? GTK_TEXT_HANDLE_MODE_CURSOR : diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index 9fd3c7d9a7..38af09f04c 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -574,6 +574,7 @@ static gint text_window_get_height (GtkTextWindow *win); static guint signals[LAST_SIGNAL] = { 0 }; +static gboolean test_touchscreen = FALSE; G_DEFINE_TYPE_WITH_CODE (GtkTextView, gtk_text_view, GTK_TYPE_CONTAINER, G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE, NULL)) @@ -1405,6 +1406,7 @@ gtk_text_view_class_init (GtkTextViewClass *klass) g_type_class_add_private (gobject_class, sizeof (GtkTextViewPrivate)); gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_TEXT_VIEW_ACCESSIBLE); + test_touchscreen = g_getenv ("GTK_TEST_TOUCHSCREEN") != NULL; } static void @@ -4808,7 +4810,8 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event) #endif device = gdk_event_get_source_device ((GdkEvent *) event); - is_touchscreen = gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN; + is_touchscreen = test_touchscreen || + gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN; if (event->type == GDK_BUTTON_PRESS) { @@ -4952,7 +4955,8 @@ gtk_text_view_button_release_event (GtkWidget *widget, GdkEventButton *event) device = gdk_event_get_source_device ((GdkEvent *) event); if (gtk_widget_is_sensitive (widget) && - gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN) + (test_touchscreen || + gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN)) mode = GTK_TEXT_HANDLE_MODE_CURSOR; else mode = GTK_TEXT_HANDLE_MODE_NONE; @@ -6759,7 +6763,7 @@ selection_motion_event_handler (GtkTextView *text_view, text_view->priv->scroll_timeout = gdk_threads_add_timeout (50, selection_scan_timeout, text_view); - if (input_source == GDK_SOURCE_TOUCHSCREEN) + if (test_touchscreen || input_source == GDK_SOURCE_TOUCHSCREEN) gtk_text_view_update_handles (text_view, GTK_TEXT_HANDLE_MODE_SELECTION); return TRUE; -- 2.30.2